package com.yuandian.business.monitor.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yuandian.api.business_monitor.po.DetailedListParams;
import com.yuandian.api.business_monitor.po.QueryBusinessDetailParams;
import com.yuandian.api.business_monitor.vo.*;
import com.yuandian.api.business_monitor.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 业务详情查询
 * @author tianlr
 *
 */
@Mapper
public interface BusinessDetailMapper {

	/**
	 * 监控查询-业务详情查询
	 * @param id 详单ID
	 * @return 返回业务详情
	 */
	Map<String, Object> selectBusinessDetail(@Param("id") Long id);

	/**
	 * 监控查询-业务详单查询
	 * @param page 分页参数
	 * @param params 查询参数
	 * @return 返回业务详情
	 */
	List<BusinessDetailedListVO> queryList(@Param("page") IPage<BusinessDetailedListVO> page, @Param("params") DetailedListParams params);

	/**
	 * 监控查询-业务详情查询
	 * @param id 详单ID
	 * @return 返回业务详情
	 */
	BusinessDetailVo selectById(@Param("params") QueryBusinessDetailParams params);

	/**
	 * 监控监控-业务详情查询-大端分类的网端数据结果集
	 * @param page 分页参数
	 * @param tableName 表名
	 * @param codeList
	 * @param serverResponseStartTimeUsec
	 * @param serverResponseEndTimeUsec
	 */
	List<SegmentDataVo> queryNodeMsg(@Param("page") IPage page, @Param("tableName") String tableName, @Param("codeList") List<String> codeList, @Param("serverResponseStartTimeUsec") Long serverResponseStartTimeUsec, @Param("serverResponseEndTimeUsec") Long serverResponseEndTimeUsec);

	/**
	 * 监控监控-业务详情查询-根据id查询告警数据
	 * @param id
	 * @return
	 */
    BasalAlarm queryBaseAlarmInfoById(@Param("id") String id);

	/**
	 * 监控监控-业务详情查询-根据id查询告警数据
	 * @param relvanceDataId
	 * @param tableName
	 * @return
	 */
	SegmentItDataVo querySegmentItDataById(@Param("id") String relvanceDataId , @Param("tableName") String tableName);

	/**
	 * 监控监控-业务详情查询-查询业务步骤
	 * @param startTimeUsec
	 * @param endTimeUsec
	 * @param systemId
	 * @return
	 */
    List<BusinessStep> queryBusinessStepByParam(@Param("startTimeUsec") Long startTimeUsec, @Param("endTimeUsec") Long endTimeUsec, @Param("systemId") Integer systemId);
}
